package com.ktjy.interceptor;

import cn.hutool.core.lang.UUID;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

/**
 * XTokenRequestInterceptor 请求拦截器（用于在请求发送前添加请求头信息，例如：添加认证信息、添加日志信息等）
 *
 * @author LILIBO
 * @since 2025-06-04
 */
@Slf4j
@Component
public class XTokenRequestInterceptor implements RequestInterceptor {

    /**
     * 请求拦截器（用于在请求发送前添加请求头信息，例如：添加认证信息、添加日志信息等）
     * 注意：如果请求头信息已经存在，则不会覆盖原有的请求头信息，例如：如果请求头信息中已经存在 Authorization，则不会覆盖原有的 Authorization
     *
     * @param template 请求模板
     */
    @Override
    public void apply(RequestTemplate template) {
        String uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
        // 添加请求头信息
        template.header("X-Token", uuid);
        log.info("请求拦截器：[Header] X-Token={}", uuid);
    }

}
